This invention relates generally to managing distributed storage systems, and more particularly to distributed storage across multiple computing hosts.
In cloud computing architectures, computing hosts are provided for a subscriber by various cloud computing providers. A cloud computing provider operates a large assembly of physical computer systems, each with processor, memory, storage, and networking capabilities. The capabilities (equivalently, services) of these physical computer systems can be made available directly to uses as bare metal hosts or can be made available via virtualized host computers (aka Virtual Machines, or VMs), each with virtual processor, memory, storage, networking capabilities. A subscriber obtains access to some portion of overall services via some number of provisioned hosts. For example, a cloud computing provider may provide one or more computing hosts executing a Linux operating system for use by a subscriber.
Previous cloud computing systems typically provide data storage using a centralized controller. The centralized controller in these systems receives requests to store data from different types of storage clients, which include computing hosts, virtual machines, and containers, and determines where to store and retrieve data for these requests. This can create complex and complicated data management scenarios for the centralized controller, which must manage a large number of backend physical storage disks and its designer must grapple with storage bandwidth and speeds on the large number of backend physical storage disks. The centralized controller is at risk of defects that affect all systems accessing it, and updating the centralized controller can prevent access to the stored data for all systems during the update.